package net.huashitong.ssydt.provider.article.mapper;


import net.huashitong.ssydt.article.entity.SsArticleArticle;
import net.huashitong.ssydt.article.entity.vo.ArticleArticleQueryInVO;
import net.huashitong.ssydt.article.entity.vo.ArticleListInVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface SsArticleArticleMapper {

    int deleteByPrimaryKey(Long id);

    int insert(SsArticleArticle record);

    int insertSelective(SsArticleArticle record);

    SsArticleArticle selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(SsArticleArticle record);

    int updateByPrimaryKey(SsArticleArticle record);

    List<SsArticleArticle> query(ArticleListInVO articleListInVO);

    /**
     * 列表查询
     *
     * @param articleQueryInVO 查询条件
     * @return List 对象列表
     */
    List<SsArticleArticle> paginationQuery(ArticleArticleQueryInVO articleQueryInVO);

    /**
     * 分页查询记录总数统计
     *
     * @param articleQueryInVO 查询条件
     * @return int 总记录数
     */
    int paginationCount(ArticleArticleQueryInVO articleQueryInVO);

    /**
     * 点击数自增 +1
     *
     * @param id
     */
    int incrementClickNumber(Long id);

    /**
     * 查询该文章前三条记录
     *
     * @param ssArticleArticle
     * @return
     */
    List<SsArticleArticle> findThreeForBeforeByIdWithArticleTypeId(SsArticleArticle ssArticleArticle);

    /**
     * 查询该文章后三条记录
     *
     * @param ssArticleArticle
     * @return
     */
    List<SsArticleArticle> findThreeForAfterByIdWithArticleTypeId(SsArticleArticle ssArticleArticle);

    /**
     * 评论数 + commentNumber
     *
     * @param ssArticleArticle
     * @return
     */
    int incrementCommentNumber(SsArticleArticle ssArticleArticle);

    /**
     * 热度数 + hotNumber
     *
     * @param ssArticleArticle
     * @return
     */
    int incrementHotNumber(SsArticleArticle ssArticleArticle);

    /**
     * 点赞数 + praiseNumber
     *
     * @param ssArticleArticle
     * @return
     */
    int incrementPraiseNumber(SsArticleArticle ssArticleArticle);
}